<!DOCTYPE HTML>
<html>
    <head>
        <link rel="Stylesheet" type="text/css" href="/static/css/typo.css">
        <link rel="Stylesheet" type="text/css" href="/static/css/reset_typo.css">
        <link rel="Stylesheet" type="text/css" href="/static/css/tango.css">
        <link rel="Stylesheet" type="text/css" href="/static/css/style.css">
	<link href="/static/images/favicon.ico" mce_href="/static/images/favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <title>git - thornbird的个人wiki</title>
        <meta name="keywords" content=""/>
        <meta name="description" content=""/>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.js"></script>
<script language="javascript" type="text/javascript">
    var oddClick = true;
    $(document).ready(function() {
      $('#toggle-button').click(function() {
        $('#container').animate({
          width: oddClick? "100%":"60%",
        });
        $(this).text(oddClick? "窄版":"宽版");
        oddClick = !oddClick;
      });
    });
</script>

    </head>

    <body>
        <div id="container" class="typo">
            
    <div id="header">
        <div id="post-nav">
            <div id="toggle-button">宽版</div>
            
            <a href="/">Home</a> » <a href="/#代码版本控制">代码版本控制</a> » git
            
        </div>
    </div>
    <div class="clearfix"></div>
    <div id="content">
        <h4 id="_1">一些设置</h4>
<ul>
<li><code>git config --global alias.st status</code></li>
<li><code>git config --global alias.ci commit</code></li>
<li><code>git config --global alias.co checkout</code></li>
<li><code>git config --global alias.br branch</code></li>
<li><code>git config --global alias.dc dcommit</code></li>
<li><code>git config --global alias.rb rebase</code></li>
<li><code>git config core.filemode false</code> 忽略文件权限及用户组的修改 </li>
<li><code>ssh-keygen -t rsa -C "your_email@youremail.com"</code> 生成公钥</li>
</ul>
<h4 id="_2">查看修改</h4>
<ul>
<li><code>git diff</code> 在git add(暂存)之前的修改查看   </li>
<li><code>git diff --stage</code> git add之后与git commit之前的修改查看</li>
<li><code>git diff HEAD</code> git commit最后一次提交之后工作目录中文件的变更   </li>
</ul>
<h4 id="git">Git删除文件</h4>
<ul>
<li><code>git rm --cached readme.txt</code> 只从stage中删除，保留物理文件</li>
<li><code>git rm readme.txt</code> 不但从stage中删除，同时删除物理文件</li>
<li><code>git mv a.txt b.txt</code> 把a.txt改名为b.txt</li>
</ul>
<h4 id="git_1">Git撤销命令</h4>
<ul>
<li><code>use "git reset HEAD..." to unstage</code> 如果已经用add 命令把文件加入stage了，就先需要从stage中撤销    </li>
<li>然后再从工作区撤销 <code>use "git checkout --..." to discard changes in working directory</code></li>
<li>多个文件则用 <code>git checkout .</code></li>
<li>如果已经commit了，则需要用 <code>git commit --amend</code>来修改，这个只能修改最近上一次的,也就是用一个新的提交来覆盖上一次的提交，因此如果push以后再做这个动作就会有危险
  </li>
<li>
<p><code>git reset --hard HEAD</code>放弃工作区和index的改动，HEAD指针仍然指向当前的commit，这条命令同时还可以用来撤销还没commit的merge，其实原理就是放弃index和工作区的改动，因为没commit的改动只存在于index和工作区中</p>
</li>
<li>
<p><code>git reset --hard HEAD^</code>用来撤销已经commit的内容(等价于 git reset --hard HEAD~1) ，原理就是放弃工作区和index的改动，同时HEAD指针指向前一个commit对象
  </p>
</li>
<li><code>git revert</code> 也是撤销命令，区别在于reset是指向原地或者向前移动指针，<code>git revert</code>是创建一个commit来覆盖当前的commit，指针向后移动</li>
</ul>
<h4 id="git_2">Git解决冲突</h4>
<p>在冲突状态下，需要解决冲突的文件会从index打回到工作区。</p>
<ul>
<li>用工具或者手工解决冲突</li>
<li>git add 命令来表明冲突已经解决</li>
<li>再次commit 已解决冲突的文件</li>
</ul>
<div class="hlcode"><pre><span class="n">git</span> <span class="n">reset</span> <span class="o">--</span><span class="n">hard</span> <span class="n">ORIG_HEAD</span>
</pre></div>


<p>用来撤销已经commit 的merge</p>
<div class="hlcode"><pre><span class="n">git</span> <span class="n">reset</span> <span class="o">--</span><span class="n">hard</span> <span class="n">HEAD</span>
</pre></div>


<p>用来撤销还没commit 的merge，其实原理就是放弃index和工作区的改动</p>
<div class="hlcode"><pre><span class="n">git</span> <span class="n">reset</span> <span class="o">--</span><span class="n">merge</span> <span class="n">ORIG_HEAD</span>
</pre></div>


<p>注意其中的--hard 换成了 --merge，这样就可以避免在回滚时清除working tree</p>
    </div>

        </div>
        <div id="footer">
              <p>
                Copyright © 2012-2016 thornbird.
                Powered by <a href="http://simiki.org/" target="_blank">Simiki</a>.
                Theme by <a href="https://github.com/tankywoo/yasimple" target="_blank">YASimple</a>.
              </p>
                <p>Last Update 2016-07-28 17:00:33</p>
        </div>
    </body>
</html>